package com.sz.common.pay.citic.entity.transfer;

import com.sz.common.pay.citic.constant.RequestCode;
import lombok.Data;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.math.BigDecimal;

/**
 * Created by siqishangshu on 17/10/16.
 * <p>
 * 对外支付（香港账户-集团客户）
 * 对应请求代码：DLCBITRN
 * <p>
 * 请求报文
 * <?xml version="1.0" encoding="GBK"?>
 * <stream>
 * <action>DLCBITRN</action>
 * <userName></userName><!--登录名 varchar(30)-->
 * <clientID></clientID><!--客户流水号 varchar (20)-->
 * <preFlg></preFlg><!--预约支付标志char(1)，0：非预约交易；1：预约交易-->
 * <preDate></preDate><!--延期支付日期char(8),格式：YYYYMMDD，预约时非空-->
 * <preTime></preTime><!--延期支付时间char(6),格式：hhmmss，只限100000，120000，140000，160000四个时间点，预约时非空；-->
 * <tranType></tranType><!--交易方式char(1)，1-行内转账；2-即日支付；3-海外汇款；4-普通支付-->
 * <accountNo></accountNo><!--付款账号char(34) -->
 * <payCryType></payCryType><!--付款账户币种char(2) -->
 * <rcvAcc></rcvAcc><!--收款账号char(34), 交易方式为行内转账时，需校验长度是12位-->
 * <rcvNm></rcvNm><!--收款人账户名称char(35), 交易方式为行内转账时，送空；交易方式非行内转账时，必输 -->
 * <rcvCryType></rcvCryType><!--收款账户币种char(2) ,交易方式为行内转账时，必输；交易方式为即日支付和海外汇款和普通支付时，送空；-->
 * <rcvBankNo></rcvBankNo><!--收款账号行号char(10), 交易方式为行内转时，必输；交易方式为即日支付和海外汇款和普通支付时，送空；交易方式为行内转账时，数据字典：CNCBIHK-信银国际香港、CNCBISG-信银国际新加坡 -->
 * <tranAmt></tranAmt><!--交易金额 decimal（15,2）-->
 * <cryType></cryType><!--交易币种char(2), 交易方式为行内转账时，交易币种必须等同于付款账户或收款账户币种；交易方式为即日支付时，1)如果收款人国家代号为香港，交易币种限于：HKD/CNY/EUR/USD；2)如果收款人国家代号为深圳，交易币种限于：HKD；交易方式为海外汇款时，限于13个币种：29-AUD、28-CAD、15-CHF、01-CNY、51-EUR、12-GBP、13-HKD、27-JPY、32-NOK、62-NZD、21-SEK、18-SGD、14-USD；交易方式为普通支付时，只限于13-HKD/01-CNY，必须等于付款账户币种-->
 * <feeType></feeType><!--费用扣除方式 char(3), 交易方式为行内转账和普通支付时，送空；交易方式为即日支付和海外汇款时，必输；数据字典：OUR-付款人支付、BEN-收款人支付、SHA-对半分担-->
 * <rem></rem><!--客户摘要char(102),可空-->
 * <excratecNo></excratecNo><!--汇率合约号char(16),可空-->
 * <rcvAddress></rcvAddress><!--收款人地址char(70)，交易方式为普通支付、海外汇款和即日支付时，选输；交易方式为行内转账时，送空；交易方式为海外汇款及收款人国家代号为(CA)加拿大的海外汇款必须提供收款地址-->
 * <rCountryCode></rCountryCode><!--收款人国家代号char(35), 交易方式为行内转账时，送空；交易方式为即日支付时，至少必需填写收款人国家代号，只限于HK香港，CN中国深圳；交易方式为海外汇款时，必输并且必须在指定的范围之内；如果收款人国家代号为加拿大时，收款人地址不能为空。交易方式为普通转账时，收款人国家代号必输，只限于HK香港-->
 * <rcvEmail></rcvEmail><!--收款人电子邮件char(200), 交易方式为行内转账时，送空；交易方式为普通支付、即日支付和海外汇款时，选输-->
 * <rbankCode></rbankCode><!--收款人银行代号char(12), 交易方式为行内转账时，送空；交易方式为海外汇款时，选输，银行的SWIFT代号; 交易方式为即日支付时，必输，根据银行的SWIFT代号；交易方式为普通支付时，必输，根据香港清算局本地银行代码表HKICL Bank Code; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
 * <rcvBankNm></rcvBankNm><!--收款人银行名称char(35), 交易方式为行内转账、普通支付时，送空；交易方式为即日支付和海外汇款时，选输; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
 * <rcvBranchNo></rcvBranchNo><!--收款人银行分支行代号char(12), 交易方式为行内转账、即日支付和海外汇款时，送空；交易方式为普通支付时，选输-->
 * <rBankAdd></rBankAdd><!--收款人银行地址char(70), 交易方式为行内转账、普通支付时，送空；交易方式为海外汇款、即日支付时，选输; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
 * <rcvBankCCode></rcvBankCCode><!--收款人银行国家代号char(35), 交易方式为行内转账时，送空; 交易方式为即日支付、普通支付时，必输；交易方式为即日支付时，收款人银行国家代号必须为HK或者CN;交易方式为普通支付时，收款人银行国家代号必须为HK； 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
 * <postscript></postscript><!--附言char(140), 交易方式为行内转账时，送空；交易方式为普通支付、即日支付和海外汇款时，选输; 交易方式为海外汇款时，所有从境外支付到中国内地的人民币海外汇款必须提供支付用途说明（CCTFDR-资本项下跨境支付、CCDNDR-慈善捐款、CGODDR-货物贸易、COCADR-其他经常项目、CSTRDR-服务贸易）-->
 * <payUseNo></payUseNo><!--支付用途代号char(2), 交易方式为行内转账、即日支付和海外汇款时，送空；交易方式为普通支付时，必输; 交易方式为普通支付时，数据字典：20：Sundry Credit、22：Salary Credit、23：Dividend Credit-->
 * <interBankCode></interBankCode><!--中介银行代号char(12), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
 * <interBankNm></interBankNm><!--中介银行名称char(35), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
 * <interBank></interBank><!--中介银行地址char(70)，交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输；-->
 * <inteCCode></inteCCode><!--中介银行国家代号char(35), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
 * </stream>
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "stream")
@Data
public class HKExternalReq {

    private String action = RequestCode.EXTERNAL_PAYMENT_HK_ACCOUNT_GROUP_CUSTOMERS;    //"DLCBITRN";
    private String userName;                            //<!--登录名 varchar(30)-->
    private String clientID;                            //<!--客户流水号 varchar (20)-->
    private String preFlg;                              //<!--预约支付标志char(1)，0：非预约交易；1：预约交易-->
    private String preDate;                             //<!--延期支付日期char(8),格式：YYYYMMDD，预约时非空-->
    private String preTime;                             //<!--延期支付时间char(6),格式：hhmmss，只限100000，120000，140000，160000四个时间点，预约时非空；-->
    private String tranType;                            //<!--交易方式char(1)，1-行内转账；2-即日支付；3-海外汇款；4-普通支付-->
    private String accountNo;                           //<!--付款账号char(34) -->
    private String payCryType;                          //<!--付款账户币种char(2) -->
    private String rcvAcc;                              //<!--收款账号char(34), 交易方式为行内转账时，需校验长度是12位-->
    private String rcvNm;                               //<!--收款人账户名称char(35), 交易方式为行内转账时，送空；交易方式非行内转账时，必输 -->
    private String rcvCryType;                          //<!--收款账户币种char(2) ,交易方式为行内转账时，必输；交易方式为即日支付和海外汇款和普通支付时，送空；-->
    private String rcvBankNo;                           //<!--收款账号行号char(10), 交易方式为行内转时，必输；交易方式为即日支付和海外汇款和普通支付时，送空；交易方式为行内转账时，数据字典：CNCBIHK-信银国际香港、CNCBISG-信银国际新加坡 -->
    private BigDecimal tranAmt;                         //<!--交易金额 decimal（15,2）-->
    private String cryType;                             //<!--交易币种char(2), 交易方式为行内转账时，交易币种必须等同于付款账户或收款账户币种；交易方式为即日支付时，1)如果收款人国家代号为香港，交易币种限于：HKD/CNY/EUR/USD；2)如果收款人国家代号为深圳，交易币种限于：HKD；交易方式为海外汇款时，限于13个币种：29-AUD、28-CAD、15-CHF、01-CNY、51-EUR、12-GBP、13-HKD、27-JPY、32-NOK、62-NZD、21-SEK、18-SGD、14-USD；交易方式为普通支付时，只限于13-HKD/01-CNY，必须等于付款账户币种-->
    private String feeType;                             //<!--费用扣除方式 char(3), 交易方式为行内转账和普通支付时，送空；交易方式为即日支付和海外汇款时，必输；数据字典：OUR-付款人支付、BEN-收款人支付、SHA-对半分担-->
    private String rem;                                 //<!--客户摘要char(102),可空-->
    private String excratecNo;                          //<!--汇率合约号char(16),可空-->
    private String rcvAddress;                          //<!--收款人地址char(70)，交易方式为普通支付、海外汇款和即日支付时，选输；交易方式为行内转账时，送空；交易方式为海外汇款及收款人国家代号为(CA)加拿大的海外汇款必须提供收款地址-->
    private String rCountryCode;                        //<!--收款人国家代号char(35), 交易方式为行内转账时，送空；交易方式为即日支付时，至少必需填写收款人国家代号，只限于HK香港，CN中国深圳；交易方式为海外汇款时，必输并且必须在指定的范围之内；如果收款人国家代号为加拿大时，收款人地址不能为空。交易方式为普通转账时，收款人国家代号必输，只限于HK香港-->
    private String rcvEmail;                            //<!--收款人电子邮件char(200), 交易方式为行内转账时，送空；交易方式为普通支付、即日支付和海外汇款时，选输-->
    private String rbankCode;                           //<!--收款人银行代号char(12), 交易方式为行内转账时，送空；交易方式为海外汇款时，选输，银行的SWIFT代号; 交易方式为即日支付时，必输，根据银行的SWIFT代号；交易方式为普通支付时，必输，根据香港清算局本地银行代码表HKICL Bank Code; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
    private String rcvBankNm;                           //<!--收款人银行名称char(35), 交易方式为行内转账、普通支付时，送空；交易方式为即日支付和海外汇款时，选输; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
    private String rcvBranchNo;                         //<!--收款人银行分支行代号char(12), 交易方式为行内转账、即日支付和海外汇款时，送空；交易方式为普通支付时，选输-->
    private String rBankAdd;                            //<!--收款人银行地址char(70), 交易方式为行内转账、普通支付时，送空；交易方式为海外汇款、即日支付时，选输; 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
    private String rcvBankCCode;                        //<!--收款人银行国家代号char(35), 交易方式为行内转账时，送空; 交易方式为即日支付、普通支付时，必输；交易方式为即日支付时，收款人银行国家代号必须为HK或者CN;交易方式为普通支付时，收款人银行国家代号必须为HK； 交易方式为海外汇款时，收款人银行代号或收款人银行名称+收款人银行地址+收款人银行国家代号，必输其一组-->
    private String postscript;                          //<!--附言char(140), 交易方式为行内转账时，送空；交易方式为普通支付、即日支付和海外汇款时，选输; 交易方式为海外汇款时，所有从境外支付到中国内地的人民币海外汇款必须提供支付用途说明（CCTFDR-资本项下跨境支付、CCDNDR-慈善捐款、CGODDR-货物贸易、COCADR-其他经常项目、CSTRDR-服务贸易）-->
    private String payUseNo;                            //<!--支付用途代号char(2), 交易方式为行内转账、即日支付和海外汇款时，送空；交易方式为普通支付时，必输; 交易方式为普通支付时，数据字典：20：Sundry Credit、22：Salary Credit、23：Dividend Credit-->
    private String interBankCode;                       //<!--中介银行代号char(12), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
    private String interBankNm;                         //<!--中介银行名称char(35), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
    private String interBank;                           //<!--中介银行地址char(70)，交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输；-->
    private String inteCCode;                           //<!--中介银行国家代号char(35), 交易方式为行内转账、即日支付和普通支付时，送空；交易方式为海外汇款时，选输; -->
}
